﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.IO;
using System.Windows.Forms;
using System.Data.SqlClient;
using nmConnectionDatabase;
using nmVentas;
using nmFactura;

namespace DarkPassenger
{
    public partial class MenuVentas : Form
    {
        //Se crea el Objeto CONEXIONDB. Se realiza la Conexion y se pasa la Ruta como parametro
        ConexionDB Conexion = new ConexionDB("Data Source=localhost;Initial Catalog=TPVideoJuegos;Integrated Security=True");
        
        public MenuVentas()
        {
            InitializeComponent();
            dpkDesde.Text = DateTime.Now.AddMonths(-1).ToShortDateString();
            dpkHasta.Text = DateTime.Now.ToShortDateString();
            cmbBusqueda.SelectedIndex = 2;
        }

        private void CargarGridVentas()
        {
            string consultaSQL = @"Select Fecha, NumFactura as [Nro. Factura],
                                    Ventas.DNICliente as [DNI Cliente],
                                    Clientes.Nombre + ' ' + Clientes.Apellido as [Cliente], 
                                    Usuarios.Nombre + ' ' + Usuarios.Apellido as [Vendedor],
                                    ImporteFinal as [Importe], 
                                    FormaPago as [Forma de Pago] FROM Ventas 
                                    inner join Clientes on Ventas.DNICliente = Clientes.DNI
                                    inner join Usuarios on Ventas.IDUsuario = Usuarios.IDUsuario
                                    WHERE Fecha >= '" + dpkDesde.Text + "'AND Fecha <= '" + dpkHasta.Text + "'";
            //Se carga el DataSet de la Conexion pasandole la Query y el NombreTabla
            Conexion.CargarDataSet(consultaSQL, "Ventas");
            grdVentas.DataSource = Conexion.GetDataSet().Tables[0];
            Conexion.Close();
        }

        private void CargarGridVentas(string Consulta)
        {
            Conexion.CargarDataSet(Consulta, "Ventas");
            grdVentas.DataSource = Conexion.GetDataSet().Tables[0];
            Conexion.Close();
        }

        private void MenuVentas_Load(object sender, EventArgs e)
        {
            CargarGridVentas();
            CargarAutoComplete();
        }

        private void MenuVentas_FormClosed(object sender, FormClosedEventArgs e)
        {
            this.Close();
            this.Dispose();
        }


        private void btnBuscador_Click(object sender, EventArgs e)
        {
            string consultaSQL = @"Select Fecha, NumFactura as [Nro. Factura],
                                    Ventas.DNICliente as [DNI Cliente],
                                    Clientes.Nombre + ' ' + Clientes.Apellido as [Cliente], 
                                    Usuarios.Nombre + ' ' + Usuarios.Apellido as [Vendedor],
                                    ImporteFinal as [Importe], 
                                    FormaPago as [Forma de Pago] FROM Ventas 
                                    inner join Clientes on Ventas.DNICliente = Clientes.DNI
                                    inner join Usuarios on Ventas.IDUsuario = Usuarios.IDUsuario
                                    WHERE Fecha >= '" + dpkDesde.Text + "'AND Fecha <= '" + dpkHasta.Text + "'";
            switch(cmbBusqueda.SelectedIndex)
            {
                case 0 :
                    consultaSQL = consultaSQL + " AND Ventas.NumFactura LIKE '%" + txtBuscar.Text + "%'";
                    break;
                case 1:
                    consultaSQL = consultaSQL + " AND Ventas.DNICliente LIKE '%" + txtBuscar.Text + "%'";
                    break;
                case 2:
                    consultaSQL = consultaSQL + " AND Clientes.Nombre + ' ' + Clientes.Apellido LIKE '%" + txtBuscar.Text + "%'";
                    break;
                case 3:
                    consultaSQL = consultaSQL + " AND Usuarios.Nombre + ' ' + Usuarios.Apellido LIKE '%" + txtBuscar.Text + "%'";
                    break;
            }
            
            //Se carga el DataSet de la Conexion pasandole la Query y el NombreTabla
            Conexion.CargarDataSet(consultaSQL, "Ventas");
            grdVentas.DataSource = Conexion.GetDataSet().Tables[0];
            Conexion.Close();
            CargarAutoComplete();
        }

        private void grdVentas_RowHeaderMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            string NumFactura;
            NumFactura = grdVentas.CurrentRow.Cells[1].Value.ToString();
            Form DetallesVenta = new MenuVentas_Detalles(NumFactura, Conexion);
            DetallesVenta.StartPosition = FormStartPosition.CenterParent;
            DetallesVenta.ShowDialog();
        }

        private void btnFactura_Click(object sender, EventArgs e)
        {
            string NumFactura;
            NumFactura = grdVentas.CurrentRow.Cells[1].Value.ToString();
            if(!(File.Exists("facturas\\" + NumFactura + ".pdf")))
            {
            Factura objFactura = new Factura(NumFactura, Conexion);
            objFactura.GenerarFactura();
            }
            System.Diagnostics.Process.Start("facturas\\" + NumFactura + ".pdf");
        }

        private void dpkDesde_ValueChanged(object sender, EventArgs e)
        {
            CargarGridVentas();
            CargarAutoComplete();
        }

        private void dpkHasta_ValueChanged(object sender, EventArgs e)
        {
            CargarGridVentas();
            CargarAutoComplete();
        }

        private void btnImprimir_Click(object sender, EventArgs e)
        {
            string NumFactura;
            NumFactura = grdVentas.CurrentRow.Cells[1].Value.ToString();
            Factura objFactura = new Factura(NumFactura, Conexion);
            if (!(File.Exists("facturas\\" + NumFactura + ".pdf")))
            {
                objFactura.GenerarFactura();
            }
            objFactura.ImprimirFactura();
        }

        private void cmbBusqueda_SelectedIndexChanged(object sender, EventArgs e)
        {
            CargarAutoComplete();
        }

        public void CargarAutoComplete()
        {
            AutoCompleteStringCollection gridCol = new AutoCompleteStringCollection();
            foreach (DataGridViewRow row in grdVentas.Rows)
            {
                switch (cmbBusqueda.SelectedIndex)
                {
                    case 0:
                        gridCol.Add(row.Cells[1].Value.ToString());
                        break;
                    case 1:
                        gridCol.Add(row.Cells[2].Value.ToString());
                        break;
                    case 2:
                        gridCol.Add(row.Cells[3].Value.ToString());
                        break;
                    case 3:
                        gridCol.Add(row.Cells[4].Value.ToString());
                        break;
                }
                txtBuscar.Clear();
                txtBuscar.AutoCompleteMode = AutoCompleteMode.Suggest;
                txtBuscar.AutoCompleteSource = AutoCompleteSource.CustomSource;
                txtBuscar.AutoCompleteCustomSource = gridCol;
            }
        }

        private void btnReiniciar_Click(object sender, EventArgs e)
        {
            CargarGridVentas();
            CargarAutoComplete();
        }
    }
}
